In computing, a file system is a mechanism for organizing and storing files to make it easy to later find and access them. File systems are typically organized as a hierarchical structure of directories in which each directory may contain one or more files and/or underlying directories. A root directory is usually the first or top most directory in a hierarchy. It can be likened to the root of a tree—the starting point where all branches originate.
A directory or file's location in a file system can be represented by a file system path (hereinafter path). Paths typically consist of a string of characters signifying directories or filenames, separated by delimiting characters, most commonly the slash or the backslash. For example, the path “C:\patents\application.doc” identifies a file named “application.doc” that is stored in a directory named “patents” on the root director of a disk drive represented by “C:.” A path can be either absolute or relative. An absolute path is usually written in reference to a root directory. A relative path is written relative to the current working directory, so the absolute path need not be given. The present invention will be described with reference to absolute paths, it being understood that the present invention should not be limited thereto.
Many different formats exist for defining paths of files in file systems, depending on the file system used. The present invention will be described with reference to the Microsoft Windows style of defining paths, it being understood that paths should not be limited thereto. The path “C:\patents\application.doc” noted above is an example of a Windows style pathname. In the Windows style of paths, the root directory is represented by the first backslash “\” and the colon “:” is used to determine the mount point/drive.
Filenames are a special kind of character string used to uniquely identify a file stored on the file system. The present invention will be described with reference to filenames containing two parts: the base name (the primary filename) and the extension (usually indicating the file type). The extension is considered part of the filename. The extension indicates the content format or type of the file (e.g., .xls, .exe, .doc, .mpeg, etc.).
A file system is typically managed by software (hereinafter referred to as a file system manager), which is part of an operating system. Traditional file system managers offer facilities to create, open, move, rename, delete, etc., both files and directories. The most familiar file systems make use of one or more data storage devices (e.g., disk drives) that offer access to an array of fixed sized blocks of physical memory, generally a power of two in size (512 bytes are common). The file system manager is often responsible for organizing blocks of physical memory into files and directories. File system managers often employ mechanisms (e.g., file allocation tables (FATs)) of some sort for keeping track of which blocks of physical memory belong to which files and which blocks of physical memory are not being used.
Bookkeeping information is also typically associated with each file within a file system. The length of the data contained in a file may be stored as a number of physical memory blocks allocated for the file or as an exact byte count. The time the data file was last modified may be stored as the file's time stamp. Some file systems also store their file creation time, the time it was last accessed, and the time that the file's metadata was last changed. Other information may include the file's device type (e.g., block, character, socket, subdirectory, etc.), its owner user-ID, and/or group-ID, and its access permission settings (e.g., whether the file is read-only, executable, etc.). An executable file, in computer science, is a file whose contents are meant to be interpreted as a program by a computer. Most executable files contain the binary representation of machine instructions of a specific processor or process. Some operating systems designate executable files by a specific naming convention, such as ending a filename with the extension .bin or .exe. The present invention will be described with reference to files that store data, not executable code, it being understood that the present invention should not be limited thereto.
A file system is usually an integral part of any modern operating system. An interface is typically provided by the operating system between a user and the file system. This interface can be textual or graphical, such as provided by a graphical user interface (GUI), such as file browsers. File browsers are useful for speeding up user interaction with files. When displayed in the browser GUI, the files are typically displayed in a graphical representation of the hierarchy.